维吉尼亚密码加密和解密算法的实现

import numpy as np

#加密函数

def Encrypt(P,key):

   P=list(P)

   P=map(ord,P)

   P=np.array(P)

   P=P-ord('a')

   m=len(P)/len(key)   

   n=len(P)%len(key)

   K=key*m+key[0:n]   

   C=(P+K)%26

   C=C+ord('A')

   C=map(chr,C)

   C=''.join(C)

   return C

   

#解密函数

def Decrypt(C,key):

   C=list(C)

   C=map(ord,C)

   C=np.array(C)

   C=C-ord('A')

   m=len(C)/len(key)   

   n=len(C)%len(key)   

   K=key*m+key[0:n]   

   P=(C-K)%26

   P=P+ord('a')

   P=map(chr,P)

   P=''.join(P)

   return P

 

 

#主函数

#加密请按E,解密请按D

user_input=raw_input('E or D:');

#输入合法性判断

while(user_input!='E' and user_input!='D'):

   user_input=raw_input('Input error, please reenter:')   

   

key=raw_input('Please enter the key:') 

while(not key.isalpha()):#输入合法性判断

  key=raw_input('Input error,key is alpha, please reenter:')   

 

key=list(key)

for i in range(len(key)):

   if key[i].islower():

       key[i]=ord(key[i])-ord('a')

   else:

      key[i]=ord(key[i])-ord('A')

 

if user_input=='E':

#加密过程

   P=raw_input('Please enter a clear text:')

    C=Encrypt(P,key)

   print 'Ciphertext:%s' % C  

else:

#解密过程  

   C=raw_input('Please enter a Ciphertext:')

   P=Decrypt(C,key)

   print 'clear text:%s' % P

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值